
package com.xtsoft.platform.base.system.repository;
/*
*    上海信拓信息技术有限公司 Koala企业综合信息管理系统
*    Copyright (C) 2010-2015 ShangHai XinTuo Software Inc.
*/

import com.xtsoft.core.repository.GenericRepository;
import com.xtsoft.platform.base.system.domain.SysRole;
import com.xtsoft.platform.base.system.domain.SysUser;
import com.xtsoft.platform.base.system.domain.UserRole;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public interface UserRoleRepository extends GenericRepository<UserRole,String> {
	/**
	 * 
	 * <p> 根据用户获取用户角色列表  </p>  
	 * @param user
	 * @return
	 * @return List<UserRole>
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月11日 
	 * @time 上午8:29:36
	 */
	public List<UserRole> findBySysUser(SysUser user);
	/**
	 * 
	 * <p> 根据角色获取用户角色列表  </p>  
	 * @param role
	 * @return
	 * @return List<UserRole>
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月11日 
	 * @time 上午8:30:51
	 */
	public List<UserRole> findBySysRole(SysRole role);
	/**
	 * 
	 * <p> 根据用户删除用户角色 </p>  
	 * @param user
	 * @return void
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月9日 
	 * @time 下午12:33:29
	 */
	public long deleteBySysUser(SysUser user);
	/**
	 * 
	 * <p> 根据角色删除用户角色  </p>  
	 * @param role
	 * @return
	 * @return long
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月11日 
	 * @time 上午8:32:16
	 */
	public long deleteBySysRole(SysRole role);
	/**
	 * 
	 * <p>  根据角色ID，删除用户角色关取--高效删除  </p>  
	 * @param id
	 * @return long  删除的记录数
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月31日 下午9:41:13
	 */
	@Modifying
	@Query("delete from UserRole en where en.sysRole.roleId = ?1")
	public Integer deleteByRoleId(String id);	
	/**
	 * 
	 * <p>  根据用户ID，删除用户角色关联--高效删除  </p>  
	 * @param ids
	 * @return long  删除的记录数
	 * @throws  
	 * @author defencez  
	 * @date 2020年5月31日 下午9:41:13
	 */
	@Modifying
	@Query("delete from UserRole en where en.sysUser.userId in ?1")
	public Integer deleteByUserId(String id);		
	

}